package com.dragon.modules.yuegou.entity.wallet;

import com.baomidou.mybatisplus.annotation.TableName;
import com.dragon.modules.yuegou.enums.wallet.InvoiceStatus;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 发票（商户向企业开的发票）实体类<br>
 * 对应的表为：walt_invoice<br>
 * 
 * @author pbuilder generated
 * @date 2019-10-10 16:53:50
 * @company sgy
 * @version 2.0
 */
@TableName("walt_invoice")
@ApiModel(description = "发票（商户向企业开的发票）")
public class InvoiceEntity {

    /** 发票ID */
	@ApiModelProperty("发票ID")
	protected String id;

    /** 商圈ID */
	@ApiModelProperty("商圈ID")
	protected String busdId;

    /** 商户ID */
	@ApiModelProperty("商户ID")
	protected String merchantId;

    /** 商户名称 */
	@ApiModelProperty("商户名称")
	protected String merchantName;

    /** 企业ID */
	@ApiModelProperty("企业ID")
	protected String companyId;

    /** 企业名称 */
	@ApiModelProperty("企业名称")
	protected String companyName;

    /** 发票开始日期（包含） */
	@ApiModelProperty("发票开始日期（包含）")
	protected LocalDate startDate;

    /** 发票截止日期（包含） */
	@ApiModelProperty("发票截止日期（包含）")
	protected LocalDate endDate;

    /** 开票金额 */
	@ApiModelProperty("开票金额")
	protected BigDecimal amount;

    /** [枚举]状态：0-未发送-UNSEND、1-未结算-UNSETTING、2-已结算-SETTED */
	@ApiModelProperty("[枚举]状态：0-未发送-UNSEND、1-未结算-UNSETTING、2-已结算-SETTED")
	protected InvoiceStatus status;

    /** 创建时间 */
	@ApiModelProperty("创建时间")
	protected LocalDateTime createdTime;

    /** 开票时间 */
	@ApiModelProperty("开票时间")
	protected LocalDateTime invoiceTime;

    /** 发票号 */
	@ApiModelProperty("发票号")
	protected String invoiceNo;

    /** 发票抬头 */
	@ApiModelProperty("发票抬头")
	protected String invoiceTitle;

    /** 结算月 yyyy-MM格式 */
	@ApiModelProperty("结算月 yyyy-MM格式")
	protected String settlementMonth;

    /** 结算人 */
	@ApiModelProperty("结算人")
	protected String settleBy;

    /** 结算时间 */
	@ApiModelProperty("结算时间")
	protected LocalDateTime settleTime;

	/**
	 * 构造一个空发票（商户向企业开的发票）实体对象
	 */
	public InvoiceEntity(){
		super();
	}

	/**
	 * 依据其它对象的信息构造一个发票（商户向企业开的发票）实体对象
	 * 
	 * @param other 其它对象
	 */
	public InvoiceEntity(InvoiceEntity other){
		super();
     	this.id = other.id;
     	this.busdId = other.busdId;
     	this.merchantId = other.merchantId;
     	this.merchantName = other.merchantName;
     	this.companyId = other.companyId;
     	this.companyName = other.companyName;
     	this.startDate = other.startDate;
     	this.endDate = other.endDate;
     	this.amount = other.amount;
     	this.status = other.status;
     	this.createdTime = other.createdTime;
     	this.invoiceTime = other.invoiceTime;
     	this.invoiceNo = other.invoiceNo;
     	this.invoiceTitle = other.invoiceTitle;
     	this.settlementMonth = other.settlementMonth;
     	this.settleBy = other.settleBy;
     	this.settleTime = other.settleTime;
	}


	/**
	 * 获取发票ID
	 * 
	 * @return id 发票ID
	 */
	public String getId() {
		return id;
	}
  	
	/**
	 * 设置发票ID
	 * 
	 * @param id 发票ID
	 */
	public void setId(String id) {
		this.id = id;
	}

	/**
	 * 获取商圈ID
	 * 
	 * @return busdId 商圈ID
	 */
	public String getBusdId() {
		return busdId;
	}
  	
	/**
	 * 设置商圈ID
	 * 
	 * @param busdId 商圈ID
	 */
	public void setBusdId(String busdId) {
		this.busdId = busdId;
	}

	/**
	 * 获取商户ID
	 * 
	 * @return merchantId 商户ID
	 */
	public String getMerchantId() {
		return merchantId;
	}
  	
	/**
	 * 设置商户ID
	 * 
	 * @param merchantId 商户ID
	 */
	public void setMerchantId(String merchantId) {
		this.merchantId = merchantId;
	}

	/**
	 * 获取商户名称
	 * 
	 * @return merchantName 商户名称
	 */
	public String getMerchantName() {
		return merchantName;
	}
  	
	/**
	 * 设置商户名称
	 * 
	 * @param merchantName 商户名称
	 */
	public void setMerchantName(String merchantName) {
		this.merchantName = merchantName;
	}

	/**
	 * 获取企业ID
	 * 
	 * @return companyId 企业ID
	 */
	public String getCompanyId() {
		return companyId;
	}
  	
	/**
	 * 设置企业ID
	 * 
	 * @param companyId 企业ID
	 */
	public void setCompanyId(String companyId) {
		this.companyId = companyId;
	}

	/**
	 * 获取企业名称
	 * 
	 * @return companyName 企业名称
	 */
	public String getCompanyName() {
		return companyName;
	}
  	
	/**
	 * 设置企业名称
	 * 
	 * @param companyName 企业名称
	 */
	public void setCompanyName(String companyName) {
		this.companyName = companyName;
	}

	/**
	 * 获取发票开始日期（包含）
	 * 
	 * @return startDate 发票开始日期（包含）
	 */
	public LocalDate getStartDate() {
		return startDate;
	}
  	
	/**
	 * 设置发票开始日期（包含）
	 * 
	 * @param startDate 发票开始日期（包含）
	 */
	public void setStartDate(LocalDate startDate) {
		this.startDate = startDate;
	}

	/**
	 * 获取发票截止日期（包含）
	 * 
	 * @return endDate 发票截止日期（包含）
	 */
	public LocalDate getEndDate() {
		return endDate;
	}
  	
	/**
	 * 设置发票截止日期（包含）
	 * 
	 * @param endDate 发票截止日期（包含）
	 */
	public void setEndDate(LocalDate endDate) {
		this.endDate = endDate;
	}

	/**
	 * 获取开票金额
	 * 
	 * @return amount 开票金额
	 */
	public BigDecimal getAmount() {
		return amount;
	}
  	
	/**
	 * 设置开票金额
	 * 
	 * @param amount 开票金额
	 */
	public void setAmount(BigDecimal amount) {
		this.amount = amount;
	}

	/**
	 * 获取[枚举]状态：0-未发送-UNSEND、1-未结算-UNSETTING、2-已结算-SETTED
	 * 
	 * @return status [枚举]状态：0-未发送-UNSEND、1-未结算-UNSETTING、2-已结算-SETTED
	 */
	public InvoiceStatus getStatus() {
		return status;
	}
  	
	/**
	 * 设置[枚举]状态：0-未发送-UNSEND、1-未结算-UNSETTING、2-已结算-SETTED
	 * 
	 * @param status [枚举]状态：0-未发送-UNSEND、1-未结算-UNSETTING、2-已结算-SETTED
	 */
	public void setStatus(InvoiceStatus status) {
		this.status = status;
	}

	/**
	 * 获取创建时间
	 * 
	 * @return createdTime 创建时间
	 */
	public LocalDateTime getCreatedTime() {
		return createdTime;
	}
  	
	/**
	 * 设置创建时间
	 * 
	 * @param createdTime 创建时间
	 */
	public void setCreatedTime(LocalDateTime createdTime) {
		this.createdTime = createdTime;
	}

	/**
	 * 获取开票时间
	 * 
	 * @return invoiceTime 开票时间
	 */
	public LocalDateTime getInvoiceTime() {
		return invoiceTime;
	}
  	
	/**
	 * 设置开票时间
	 * 
	 * @param invoiceTime 开票时间
	 */
	public void setInvoiceTime(LocalDateTime invoiceTime) {
		this.invoiceTime = invoiceTime;
	}

	/**
	 * 获取发票号
	 * 
	 * @return invoiceNo 发票号
	 */
	public String getInvoiceNo() {
		return invoiceNo;
	}
  	
	/**
	 * 设置发票号
	 * 
	 * @param invoiceNo 发票号
	 */
	public void setInvoiceNo(String invoiceNo) {
		this.invoiceNo = invoiceNo;
	}

	/**
	 * 获取发票抬头
	 * 
	 * @return invoiceTitle 发票抬头
	 */
	public String getInvoiceTitle() {
		return invoiceTitle;
	}
  	
	/**
	 * 设置发票抬头
	 * 
	 * @param invoiceTitle 发票抬头
	 */
	public void setInvoiceTitle(String invoiceTitle) {
		this.invoiceTitle = invoiceTitle;
	}

	/**
	 * 获取结算月 yyyy-MM格式
	 * 
	 * @return settlementMonth 结算月 yyyy-MM格式
	 */
	public String getSettlementMonth() {
		return settlementMonth;
	}
  	
	/**
	 * 设置结算月 yyyy-MM格式
	 * 
	 * @param settlementMonth 结算月 yyyy-MM格式
	 */
	public void setSettlementMonth(String settlementMonth) {
		this.settlementMonth = settlementMonth;
	}

	/**
	 * 获取结算人
	 * 
	 * @return settleBy 结算人
	 */
	public String getSettleBy() {
		return settleBy;
	}
  	
	/**
	 * 设置结算人
	 * 
	 * @param settleBy 结算人
	 */
	public void setSettleBy(String settleBy) {
		this.settleBy = settleBy;
	}

	/**
	 * 获取结算时间
	 * 
	 * @return settleTime 结算时间
	 */
	public LocalDateTime getSettleTime() {
		return settleTime;
	}
  	
	/**
	 * 设置结算时间
	 * 
	 * @param settleTime 结算时间
	 */
	public void setSettleTime(LocalDateTime settleTime) {
		this.settleTime = settleTime;
	}

    public String toString() {
		return new StringBuilder().append("InvoiceEntity{").
			append("id=").append(id).
			append(",busdId=").append(busdId).
			append(",merchantId=").append(merchantId).
			append(",merchantName=").append(merchantName).
			append(",companyId=").append(companyId).
			append(",companyName=").append(companyName).
			append(",startDate=").append(startDate).
			append(",endDate=").append(endDate).
			append(",amount=").append(amount).
			append(",status=").append(status).
			append(",createdTime=").append(createdTime).
			append(",invoiceTime=").append(invoiceTime).
			append(",invoiceNo=").append(invoiceNo).
			append(",invoiceTitle=").append(invoiceTitle).
			append(",settlementMonth=").append(settlementMonth).
			append(",settleBy=").append(settleBy).
			append(",settleTime=").append(settleTime).
			append('}').toString();
    }

	/**
	 * 复制对象
	 * 
	 * @return 复制后的新实体对象
	 */
	public InvoiceEntity copy() {
		return new InvoiceEntity(this);
	}

    /** 发票ID */
	public static final String COL_ID = "id";

    /** 商圈ID */
	public static final String COL_BUSD_ID = "busd_id";

    /** 商户ID */
	public static final String COL_MERCHANT_ID = "merchant_id";

    /** 商户名称 */
	public static final String COL_MERCHANT_NAME = "merchant_name";

    /** 企业ID */
	public static final String COL_COMPANY_ID = "company_id";

    /** 企业名称 */
	public static final String COL_COMPANY_NAME = "company_name";

    /** 发票开始日期（包含） */
	public static final String COL_START_DATE = "start_date";

    /** 发票截止日期（包含） */
	public static final String COL_END_DATE = "end_date";

    /** 开票金额 */
	public static final String COL_AMOUNT = "amount";

    /** [枚举]状态：0-未发送-UNSEND、1-未结算-UNSETTING、2-已结算-SETTED */
	public static final String COL_STATUS = "status";

    /** 创建时间 */
	public static final String COL_CREATED_TIME = "created_time";

    /** 开票时间 */
	public static final String COL_INVOICE_TIME = "invoice_time";

    /** 发票号 */
	public static final String COL_INVOICE_NO = "invoice_no";

    /** 发票抬头 */
	public static final String COL_INVOICE_TITLE = "invoice_title";

    /** 结算月 yyyy-MM格式 */
	public static final String COL_SETTLEMENT_MONTH = "settlement_month";

    /** 结算人 */
	public static final String COL_SETTLE_BY = "settle_by";

    /** 结算时间 */
	public static final String COL_SETTLE_TIME = "settle_time";
}
